package ar.edu.utn.frgp.labtec.entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;

@SuppressWarnings("serial")
@Entity()
@Table(name = "ORDEN_DE_TRABAJO")
public class OrdenDeTrabajo implements Serializable {

	@Id
	@Column(name = "ID_ORDEN")
	private Integer idOrden;

	@Column(name = "ANIO_ORDEN")
	private String anioOrden;
	
	@Column(name = "COD_DEPTO")
	private String codDepto;
	
	@Column(name = "COD_LAB")
	private Integer codLab;

	@ManyToOne()
	@JoinColumns(value = {
		@JoinColumn(name = "COD_LAB", referencedColumnName = "COD_LAB", insertable=false, updatable=false),
		@JoinColumn(name = "COD_DEPTO", referencedColumnName = "COD_DEPTO", insertable=false, updatable=false)
	})
	@NotFound(action = NotFoundAction.IGNORE)
	private Laboratorio laboratorio; 
	
	@ManyToOne()
	@JoinColumn(name = "COD_DEPTO", insertable=false, updatable=false)
	@NotFound(action = NotFoundAction.IGNORE)
	private Departamento departamento;
	
	@ManyToOne
	@JoinColumn(name = "ID_CLIENTE")
	private Cliente cliente;
	
	@Column(name = "NUMERO_CUENTA")
	private String numeroCuenta;

	@Column(name = "MONTO_TOTAL")
	private String montoTotal;

	@Column(name = "PLAZO_ENTREGA")
	private String plazoEntrega;

	@Column(name = "DIST_PRODUCIDOS")
	private String distribucionProducidos;

	@Column(name = "FORMA_PAGO")
	private String formaPago;

	@Column(name = "OBSERVACIONES")
	private String observaciones;
	
	// H= habilitado, I=inhabilitado
	@Enumerated(EnumType.STRING)
	@Column(name = "ESTADO")
	private EstadoEnum estado;

	// ############ EQUALS ############


	// ############ CONSTRUCTOR ############
	public OrdenDeTrabajo() {
	}



	// ############ GETTERS Y SETTERS ############
	
	public String getAnioOrden() {
		return anioOrden;
	}

	public Integer getIdOrden() {
		return idOrden;
	}

	public void setIdOrden(Integer idOrden) {
		this.idOrden = idOrden;
	}

	public void setAnioOrden(String anioOrden) {
		this.anioOrden = anioOrden;
	}

	public String getNumeroCuenta() {
		return numeroCuenta;
	}

	public void setNumeroCuenta(String numeroCuenta) {
		this.numeroCuenta = numeroCuenta;
	}

	public String getMontoTotal() {
		return montoTotal;
	}

	public void setMontoTotal(String montoTotal) {
		this.montoTotal = montoTotal;
	}

	public String getPlazoEntrega() {
		return plazoEntrega;
	}

	public void setPlazoEntrega(String plazoEntrega) {
		this.plazoEntrega = plazoEntrega;
	}

	public String getDistribucionProducidos() {
		return distribucionProducidos;
	}

	public void setDistribucionProducidos(String distribucionProducidos) {
		this.distribucionProducidos = distribucionProducidos;
	}

	public String getFormaPago() {
		return formaPago;
	}

	public void setFormaPago(String formaPago) {
		this.formaPago = formaPago;
	}

	public String getObservaciones() {
		return observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public void setEstado(EstadoEnum estado) {
		this.estado = estado;
	}

	public EstadoEnum getEstado() {
		return estado;
	}



	public String getCodDepto() {
		return codDepto;
	}



	public void setCodDepto(String codDepto) {
		this.codDepto = codDepto;
	}



	public Integer getCodLab() {
		return codLab;
	}



	public void setCodLab(Integer codLab) {
		this.codLab = codLab;
	}



	public Laboratorio getLaboratorio() {
		return laboratorio;
	}



	public void setLaboratorio(Laboratorio laboratorio) {
		this.laboratorio = laboratorio;
	}



	public Departamento getDepartamento() {
		return departamento;
	}



	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}



	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}



	public Cliente getCliente() {
		return cliente;
	}
	
	

}
